X に書ききれないことはここに

X に書ききれないことはここに

ESP32 で TP-Link TC70 をコントロール

概要

AtomS3 (ESP32) からネットワークカメラ (TP-Link TC70) のパン・チルトを ONVIF プロトコルで制御した話

はじめに

TP-Link のネットワークカメラは ONVIF というオープンプロトコルに対応していて外部からパン・チルト等の制御が可能です。スマホをVRゴーグルにセッ トしてスマホの傾きとパン・チルトを同期すれば面白そうな気がしたので動画のもの作ってをみました。

設計

スマホ内蔵の加速度センサを使用して全てスマホアプリで実現することもできるのですが、スマホアプリを作ったことがないストリーミ ング再生部分の実装が面倒な気がしたので、姿勢検出&パン・チルト制御には AtomS3 を使用することにしました。またスマホと AtomS3 の姿勢の連動には USB Type-C male to Type-C male アダプタを使用しました。

ONVIF

ONVIF で PTZ (PanTiltZoom) を操作するには SOAP (HTTP の POST を使って XML 形式のコマンド・レスポンスをやり取り) を実装すればよいので ONVIF の仕様書を参考に必要なコマンドを探しました。詳細はサンプルコード。

姿勢検出

AtomS3 には6軸加速度センサが内蔵されているので、加速度センサの出力を madgwick フィルタに通して姿勢を取得しました。詳細はサンプルコード。

サンプルコード

https://github.com/sokosun/atoms3_tc70_control/

そのほか

どの XML パーサが Arduino に適していて、かつ XML namespace 対応なのかよくわからなかったので、とりあえず XML namespace 非対応のものを使用しました。そんなわけで他のネットワークカメラは ONVIF 対応でもサンプルコードそのままでは制御できないと思います。